//
//  DataError.swift
//  travelMapMvvm
//
//  Created by green on 15/8/29.
//  Copyright (c) 2015年 travelMapMvvm. All rights reserved.
//

import Foundation

public enum DataError {
    
    case TelephoneRegisterError(String?)
    case TelephoneLoginError(String?)
    case ImageDownloadError(String?)
    case SinaAuthError(String?)
    case GetZonesError(String?)
    case VerityCodeError(String?)
    case LocationError(String?)
    case GeocodeLocationError(String?)
    case TimeoutError(String?)
    case INTULocationError(String?)
    case CaculateRoutesError(String?)
    case GetVerityCodeError(String?)
    case QQLoginError(String?)
    case ModifyUInfoError(String?)
    case ModifyPWDError(String?)
    case UploadHeadPhotoError(String?)
    case QueryStrategyListBySystemError(String?)
    case QueryStrategyListByKeywordError(String?)
    case QueryStrategyListByUserIdError(String?)
    case SinaLoginError(String?)
    case QueryPOIListByStrategyId(String?)
    case QueryPOIListByCityId(String?)
    case QueryPOIListByKeyword(String?)
    case QueryPOIListByUserId(String?)
    case QueryPOIListByCenterPOIId(String?)
    case QueryCityListByKeyword(String?)
    case QueryPOICommentList(String?)
    case AddPOIComment(String?)
    case QQAuthError(String?)
    case GetQQUserInfoError(String?)
    case GetSinaUserInfoError(String?)
    case CollectStrategyError(String?)
    case LikeStrategyError(String?)
    case CollectPOIError(String?)
    case DidVisitPOIError(String?)
    
    // 位置
    public var error : NSError {
        
        get {
            
            var errorCode:Int!
            var errorMsg:String!
            
            switch (self) {
                
            case .TelephoneRegisterError(let msg):
                
                errorCode = -1000 - 1
                errorMsg = msg==nil ? "服务器错误:手机注册失败" : msg
                
                break
                
            case .TelephoneLoginError(let msg):
                
                errorCode = -1000 - 2
                errorMsg = msg==nil ? "服务器错误:手机登录失败" : msg
                
                break
                
            case .ImageDownloadError(let msg):
                
                errorCode = -1000 - 3
                errorMsg = msg==nil ? "服务器错误:图片下载失败" : msg
                
                break
                
            case .SinaAuthError(let msg):
                
                errorCode = -1000 - 4
                errorMsg = msg==nil ? "新浪登录授权失败" : msg
                
                break
                
            case .GetZonesError(let msg):
                
                errorCode = -1000 - 5
                errorMsg = msg==nil ? "服务器错误:获取支持区号失败" : msg
                
                break
                
            case .VerityCodeError(let msg):
                
                errorCode = -1000 - 6
                errorMsg = msg==nil ? "手机验证码错误" : msg
                
                break
                
            case .LocationError(let msg):
                
                errorCode = -1000 - 7
                errorMsg = msg==nil ? "定位失败" : msg
                
                break
                
            case .GeocodeLocationError(let msg):
                
                errorCode = -1000 - 8
                errorMsg = msg==nil ? "反编码地理位置失败" : msg
                
                break
                
            case .TimeoutError(let msg):
                
                errorCode = -1000 - 9
                errorMsg = msg==nil ? "请求超时" : msg
                
                break
                
            case .INTULocationError(let msg):
                
                errorCode = -1000 - 10
                errorMsg = msg==nil ? "请允许应用访问定位服务，设置方式:手机设置->隐私->定位服务" : msg
                
                break
                
            case .CaculateRoutesError(let msg):
                
                errorCode = -1000 - 11
                errorMsg = msg==nil ? "计算路线失败" : msg
                
                break
                
            case .GetVerityCodeError(let msg):
                
                errorCode = -1000 - 12
                errorMsg = msg==nil ? "获取验证码失败" : msg
                
                break
                
            case .QQLoginError(let msg):
                
                errorCode = -1000 - 13
                errorMsg = msg==nil ? "服务器错误:腾讯登录失败" : msg
                
                break
                
            case .ModifyUInfoError(let msg):
                
                errorCode = -1000 - 14
                errorMsg = msg==nil ? "服务器错误:修改信息失败" : msg
                
                break
                
            case .ModifyPWDError(let msg):
                
                errorCode = -1000 - 15
                errorMsg = msg==nil ? "服务器错误:修改密码失败" : msg
                
                break
                
            case .UploadHeadPhotoError(let msg):
                
                errorCode = -1000 - 16
                errorMsg = msg==nil ? "服务器错误:上传头像失败" : msg
                
                break
                
            case .QueryStrategyListBySystemError(let msg):
                
                errorCode = -1000 - 17
                errorMsg = msg==nil ? "服务器错误:查询首页攻略失败" : msg
                
                break
                
            case .QueryStrategyListByKeywordError(let msg):
                
                errorCode = -1000 - 18
                errorMsg = msg==nil ? "服务器错误:查询关键字攻略失败" : msg
                
                break
                
            case .QueryStrategyListByUserIdError(let msg):
                
                errorCode = -1000 - 19
                errorMsg = msg==nil ? "服务器错误:查询已收藏攻略失败" : msg
                
                break
                
            case .SinaLoginError(let msg):
                
                errorCode = -1000 - 20
                errorMsg = msg==nil ? "服务器错误:新浪登录失败" : msg
                
                break
                
            case .QueryPOIListByStrategyId(let msg):
                
                errorCode = -1000 - 21
                errorMsg = msg==nil ? "服务器错误:查询攻略目的地失败" : msg
                
                break
                
            case .QueryPOIListByCityId(let msg):
                
                errorCode = -1000 - 22
                errorMsg = msg==nil ? "服务器错误:查询城市目的地失败" : msg
                
                break
                
            case .QueryPOIListByKeyword(let msg):
                
                errorCode = -1000 - 23
                errorMsg = msg==nil ? "服务器错误:查询关键字目的地失败" : msg
                
                break
                
            case .QueryPOIListByUserId(let msg):
                
                errorCode = -1000 - 24
                errorMsg = msg==nil ? "服务器错误:查询已收藏目的地失败" : msg
                
                break
                
            case .QueryPOIListByCenterPOIId(let msg):
                
                errorCode = -1000 - 25
                errorMsg = msg==nil ? "服务器错误:查询指定目的地失败" : msg
                
                break
                
            case .QueryCityListByKeyword(let msg):
                
                errorCode = -1000 - 26
                errorMsg = msg==nil ? "服务器错误:查询关键字城市失败" : msg
                
                break
                
            case .QueryPOICommentList(let msg):
                
                errorCode = -1000 - 27
                errorMsg = msg==nil ? "服务器错误:查询目的地评论失败" : msg
                
                break
                
            case .AddPOIComment(let msg):
                
                errorCode = -1000 - 28
                errorMsg = msg==nil ? "服务器错误:新增目的地评论失败" : msg
                
                break
                
            case .QQAuthError(let msg):
                
                errorCode = -1000 - 29
                errorMsg = msg==nil ? "腾讯登录授权失败" : msg
                
                break
                
            case .GetQQUserInfoError(let msg):
                
                errorCode = -1000 - 30
                errorMsg = msg==nil ? "获取腾讯用户信息失败" : msg
                
                break
                
            case .GetSinaUserInfoError(let msg):
                
                errorCode = -1000 - 31
                errorMsg = msg==nil ? "获取新浪用户信息失败" : msg
                
                break
                
            case .CollectStrategyError(let msg):
                
                errorCode = -1000 - 32
                errorMsg = msg==nil ? "服务器错误:收藏攻略失败" : msg
                
                break
                
            case .LikeStrategyError(let msg):
                
                errorCode = -1000 - 33
                errorMsg = msg==nil ? "服务器错误:点赞攻略失败" : msg
                
                break
                
            case .CollectPOIError(let msg):
                
                errorCode = -1000 - 34
                errorMsg = msg==nil ? "服务器错误:收藏目的地失败" : msg
                
                break
                
            case .DidVisitPOIError(let msg):
                
                errorCode = -1000 - 35
                errorMsg = msg==nil ? "服务器错误:去过目的地失败" : msg
                
                break
            }
            
            return NSError(domain: kURL, code: errorCode, userInfo: [NSLocalizedDescriptionKey:errorMsg])
        }
    }
}